package com.bzyd.ss.encoder;

import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * 简单加密器
 * 专门用于做认证流程的凭证校验
 * 其中有两个核心方法
 * 1、encode - 把明文密码加密成密文密码
 * 2、matches - 校验明文和密文是否匹配
 */
public class SimplePasswordEncoder implements PasswordEncoder {

    /**
     * 加密逻辑
     * @param charSequence 明文字符串，就是页面收集的明文密码
     * @return
     */
    @Override
    public String encode(CharSequence charSequence) {
        // 不做处理，直接返回
        System.out.println("SimplePasswordEncoder - 加密逻辑执行");
        return charSequence.toString();
    }

    /**
     * 匹配逻辑
     * @param charSequence 明文，页面收集的密码
     * @param s 密文，存储在数据库中的密码
     * @return
     */
    @Override
    public boolean matches(CharSequence charSequence, String s) {
        System.out.println("SimplePasswordEncoder - 密码匹配逻辑执行");
        return s.equals(encode(charSequence));
    }
}
